home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / DJSRC106.ARJ / UTOD.C < prev    next >
C/C++ Source or Header  |  1991-08-30  |  2KB  |  83 lines

  1. /* This program is designed to be compiled under Turbo C */
  2.  
  3. #include <stdio.h>
  4. #include <dir.h>
  5. #include <dos.h>
  6. #include <fcntl.h>
  7. #include <sys/stat.h>
  8. #include <alloc.h>
  9. #include <string.h>
  10. #include <io.h>
  11.  
  12. typedef struct F {
  13.     char *name;
  14.     struct F *next;
  15.     } F;
  16.  
  17. main(argc, argv)
  18. int argc;
  19. char *argv[];
  20. {
  21.   F *root=NULL, *n;
  22.   int done;
  23.   struct ffblk ff;
  24.   char path[80], drive[10];
  25.   for (argc--, argv++; argc; argc--, argv++)
  26.   {
  27.     fnsplit(*argv, drive, path, NULL, NULL);
  28.     done = findfirst(*argv, &ff, 0);
  29.     while (!done)
  30.     {
  31.       n = (F *)malloc(sizeof(F));
  32.       n->name = (char *)malloc(strlen(ff.ff_name)+strlen(drive)+strlen(path)+5);
  33.       fnmerge(n->name, drive, path, ff.ff_name, "");
  34.       n->next = root;
  35.       root = n;
  36.       done = findnext(&ff);
  37.     }
  38.     while (root)
  39.     {
  40.       utod(root->name);
  41.       n = root->next;
  42.       free(root->name);
  43.       free(root);
  44.       root = n;
  45.     }
  46.   }
  47. }
  48.  
  49. utod(fname)
  50. char *fname;
  51. {
  52.   int sf, df, l, bp1, bp2, saw_13=0;
  53.   struct ftime ftime;
  54.   char buf[512], buf2[1024]; /* worst case */
  55.   char tfname[80], drive[3], path[80];
  56.   sf = open(fname, O_RDONLY|O_BINARY);
  57.   fnsplit(fname, drive, path, NULL, NULL);
  58.   fnmerge(tfname, drive, path, "utod", "c");
  59.   df = open(tfname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWRITE);
  60.   while ((l=read(sf, buf, 512)) > 0)
  61.   {
  62.     bp2 = 0;
  63.     for (bp1 = 0; bp1 < l; bp1++)
  64.     {
  65.       if (!saw_13 && (buf[bp1] == 10))
  66.         buf2[bp2++] = 13;
  67.       buf2[bp2++] = buf[bp1];
  68.       if (buf[bp1] == 13)
  69.         saw_13 = 1;
  70.       else
  71.         saw_13 = 0;
  72.     }
  73.     write(df, buf2, bp2);
  74.   }
  75.   getftime(sf, &ftime);
  76.   setftime(df, &ftime);
  77.   close(sf);
  78.   close(df);
  79.  
  80.   remove(fname);
  81.   rename(tfname, fname);
  82. }
  83.